var age = 29
var anotherAge = --age + 2
console.log('anotherAge', anotherAge) // 30
var num1 = 2
var num2 = 20
var num3 = --num1 + num2 //21
var num4 = num1 + num2 // 21
console.log('num3', num3)
console.log('num4', num4)

var n1 = 2
var n2 = 20
var n3 = n1-- + n2 // 22
var n4 = n1 + n2 // 21

// String类型 
var a = '1234abc'
var b = 'z'
var c = '1'
var d = false
var e = '1.1'
var f = 1.1
var g = {
  valueOf: function () {
    return false
  }
}
console.log(a--) //NaN
console.log(b--) // NaN
console.log(c--) // 1  先执行console.log,再减1
console.log(d--) // 0
console.log(--e) // 0.10000000000000009  先减1，再执行console.log(),此时输出的是减去1之后的值
console.log(--f) // 0.10000000000000009
console.log(g--) // 0
console.log('一元加操作符+++++++++++++++++++++++++++')
console.log(+a) // NaN
console.log(+b) // NaN
console.log(+c) // 0 
console.log(+d) // -1
console.log(+e) // 0.10000000000000009
console.log(+f) //0.10000000000000009
console.log(+g) // -1
console.log('一元减操作符——————————————————————————')
console.log(-a) // NaN
console.log(-b) // NaN
console.log(-c) // -0 
console.log(-d) // 1
console.log(-e) // -0.10000000000000009
console.log(-f) //-0.10000000000000009
console.log(-g) // 1
console.log(d) // -1 说明一元加减不会改变原来的变量，而递增递减会改变原来的变量

var fund = false
var result = fund && someUndefined
try {
  console.log('result', result)
} catch (e) {
  console.log(e)
}
var zero = 0
var one = 1
console.log(1 && 0) // 0
console.log(0 && 1) // 0
console.log(0 || 1) // 1
console.log(1 || 0) // 1
console.log('乘性操作符+++++++++++++++++++++++++++++++++++++++++++++++++++=')

var h = {
  valueOf: function () {
    return 3
  }
}
var i = '2'
var j = 0
var k = Infinity
var l = -Infinity
var m = 30
var n = NaN
console.log(h * i) // 6
console.log(n * i) // NaN
console.log(k * j) // NaN
console.log(k * i) // Infinity
console.log(k * k) // Infinity
console.log(m / n) // NaN
console.log(k / k) // NaN
console.log(j / j) // NaN
console.log(i / j) // Infinity
console.log(k / i) // Infinity
console.log(m / h) // 10
console.log('aaa', m / k) // 0
console.log(k % i) // NaN
console.log(m % j) // NaN
console.log(k % k) // NaN
console.log(m % k) // 30
console.log(0 % k) // 0
console.log(m % i) // 0
console.log(0 % 0) // NaN
